Changelog for MyUSB:
=======================================

	Version 1.5.0 - UNRELEASED:
	--------------------------------------------
		* Fixed MIDI demo, now correctly waits for the endpoint to be ready between multiple note messages
		* Added CDC Host demo application
		* Added KeyboardFullInt demo application
		* Endpoint and Pipe creation routines now mask endpoint/pipe size with the size mask, to remove transaction
		  size bits not required for the routines (improves compatibility with devices)
		* Fixed AudioInput demo - now correctly sends sampled audio to the host PC
		* Shrunk round-robbin scheduler code slightly via the use of struct pointers rather than array indexes
		* Fixed off-by-one error when determining if the Usage Stack is full inside the HID Report parser
		* Renamed Magstripe.h to MagstripeHW.h and moved driver out of the library and into the MagStripe demo folder
		* Added preprocessor checks to enable C linkage on the library components when used with a C++ compiler
		* Added Still Image Host demo application
		* The USB device task now restores the previously selected endpoint, allowing control requests to be transparently
		  handled via interrupts while other endpoints are serviced through polling
		* Fixed device signature being sent in reverse order in the CDC bootloader
		* Host demos now have a seperate ConfigDescriptor.c/.h file for configuration descriptor processing
		* HostWithParser demos now have a seperate HIDReport.c/.h file for HID report processing and dumping
		* Removed non-mandatory commands from MassStorage demo to save space, fixed SENSE ResponseCode value
		* CDC demos now send empty packets after sending a full one to prevent buffering issues on the host
		* Updated demo descriptors to use VID/PID values donated by Atmel
		* Added DoxyGen documentation to the source files
		* Fixed Serial_IsCharRecieved() definition, was previously reversed
		* Removed seperate USB_Descriptor_Language_t descriptor, USB_Descriptor_String_t is used instead
		* Changed USB_GetDescriptor() prototype to support multiple languages
		* Removed unused Device Qualifier descriptor structure
		* Renamed the USB_CreateEndpoints event to the more appropriate USB_ConfigurationChanged
		* Fixed MassStorageHost demo reading in the block data in reverse
		* Removed outdated typedefs in StdRequestType.h, superceeded by the macro masks
		* Corrected OTG.h is now included when the AVR supports both Host and Device modes, for creating OTG products
		* USB_DeviceEnumerationComplete event is now also fired when in device mode and the host has finished its enumeration
		* Interrupt driven demos now properly restore previously selected endpoint when ISR is complete
		* USB_HOST_TIMEOUT_MS is now overridable in the user project makefile to a custom fixed timeout value
		* Renamed USB_Host_SOFGeneration_* macros to more friendly USB_Host_SuspendBus(), USB_Host_ResumeBus()
		  and USB_Host_IsBusSuspended()
		* Renamed *_*_Is* macros to *_Is* to make all flag checking macros consistant, Pipe_SetInterruptFreq() is now
		  Pipe_SetInterruptPeriod() to use the correct terminology
		* UnicodeString member of USB_Descriptor_String_t struct changed to an ordinary int array type, so that the GCC
		  Unicode strings (prefixed with an L before the opening quotation mark) can be used instead of explicit arrays
		  of ASCII characters
		* Fixed Endpoint/Pipes being configured incorrectly if the maximum endpoint/pipe size for the selected USB AVR
		  model was given as the bank size
		* HID device demos now use a true raw array for the HID report descriptor rather than a struct wrapped array
		* Added VERSION_BCD() macro, fixed reported HID and USB version numbers in demo descriptors
		* Cleaned up GetDescriptor device chapter 9 handler function
		* Added GET_REPORT class specific request to HID demos to make them complaint to the HID class

	Version 1.4.1 - Released 5 May, 2008:
	--------------------------------------------
		* Enhanced KeyboardWithParser demo, now prints out pressed alphanumeric characters like the standard demo
		* Fixed MassStorage demo, read/writes using non mode-10 commands now work correctly
		* Corrected version number in Version.h

	Version 1.4.0 - Released 30 April, 2008:
	--------------------------------------------
		* Added HID Report Parser API to the library
		* Added Mouse and Keyboard host demo applications, using the new HID report parser engine
		* Added MouseFullInt demo, which demonstrates a fully interrupt (including control requests) mouse device
		* Fixed incorrect length value in the audio control descriptor of the AudioOutput and AudioInput demos
		* Added MIDI device demo application to the library
		* Fixed problem preventing USB devices from being resumed from a suspended state
		* Added new CDC class bootloader to the library, based on the AVR109 bootloader protocol
		* Added header to each demo application indicating the mode, class, subclass, standards used and supported speed
		* Functions expecting endpoint/pipe numbers are no longer automatically masked against ENDPOINT_EPNUM_MASK or
          PIPE_PIPENUM_MASK - this should be manually added to code which requires it
		* Fixed DFU class bootloader - corrected frequency of flash page writes, greatly reducing programming time
		* Renamed AVR_HOST_GetDeviceConfigDescriptor() to USB_Host_GetDeviceConfigDescriptor() and AVR_HOST_GetNextDescriptor()
		  to USB_Host_GetNextDescriptor()
		* Added new USB_Host_GetNextDescriptorOfTypeBefore() and USB_Host_GetNextDescriptorOfTypeAfter() routines
		* Moved configuration descriptor routines to MyUSB/Drivers/USB/Class/, new accompanying ConfigDescriptors.c file
		* Added new configuration descriptor comparator API for more powerful descriptor parsing, updated host demos to use the
		  new comparator API
		* Fixed MassStorageHost demo capacity printout, and changed data read/write mode from little-endian to the correct
		  big-endian for SCSI devices
		* Fixed macro/function naming consistancy; USB_HOST is now USB_Host, USB_DEV is now USB_Device
	    * Added better error reporting to host demos
		* Added 10 microsecond delay after addressing devices in host mode, to prevent control stalls
		* Fixed AudioOut demo oncemore -- apparently Windows requires endpoint packets to be >=192 bytes

	Version 1.3.2 - Released April 1st, 2008:
	--------------------------------------------
		* Added call to ReconfigureUSART() in USBtoSerial SetLineCoding request, so that baud rate changes
		  are reflected in the hardware
		* Fixed CDC and USBtoSerial demos - Stream commands do not work for control endpoints, and the 
		  GetLineCoding request had an incorrect RequestType mask preventing it from being processed
		* Improved reliability of the USBtoSerial demo, adding a busy wait while the buffer is full
		* Device control endpoint size is now determined from the device's descriptors rather than being fixed
		* Seperated out SPI code into new SPI driver in AT90USBXXX driver directory
		* Bootloader now returns correct PID for the selected USB AVR model, not just the AT90USB128X PID
		* Added support for the RZUSBSTICK board
		* Bicolour driver removed in favour of generic LEDs driver
		* Added support for the ATMEGA32U4 AVR
		* Added MANUAL_PLL_CONTROL compile time option to prevent the USB library from manipulating the PLL

	Version 1.3.1 - Release March 19th 2008:
	--------------------------------------------
		* Fixed USB to Serial demo - class value in the descriptors was incorrect
		* Control endpoint size changed from 64 bytes to 8 bytes to save on USB FIFO RAM and to allow low
		  speed mode devices to enumerate properly
		* USB to Serial demo data endpoints changed to dual-banked 16 byte to allow the demo to work
		  on USB AVRs with limited USB FIFO RAM
		* Changed demo endpoint numbers to use endpoints 3 and 4 for double banking, to allow limited
		  USB device controller AVRs (AT90USB162, AT90USB82) to function correctly
		* Updated Audio Out demo to use timer 1 for AVRs lacking a timer 3 for the PWM output
		* Fixed incorrect USB_DEV_OPT_HIGHSPEED entry in the Mass Storage device demo makefile
		* Optimized Mass Storage demo for a little extra transfer speed
		* Added LED indicators to the Keyboard demo for Caps Lock, Num Lock and Scroll Lock
		* Added Endpoint_Read_Stream, Endpoint_Write_Stream, Pipe_Read_Stream and Pipe_Write_Stream functions
		  (including Big and Little Endian variants)
		* Made Dataflash functions inline for speed, removed now empty Dataflash.c driver file
		* Added new SetSystemClockPrescaler() macro - thanks to Joerg Wunsch
		* Fixed Endpoint_ClearStall() to function correctly on full USB controller AVRs (AT90USBXXX6/7)
		* Endpoint_Setup_In_Clear() and Endpoint_Setup_Out_Clear() no longer set FIFOCON, in line with the
		  directives in the datasheet
		* Fixed PLL prescaler defines for all AVR models and frequencies
		* Fixed ENDPOINT_INT_IN and ENDPOINT_INT_OUT definitions
		* Added interrupt driven keyboard and mouse device demos
		* Combined USB_Device_ClearFeature and USB_Device_SetFeature requests into a single routine for code
		  size savings
		* Added missing Pipe_GetCurrentPipe() macro to Pipe.h

	Version 1.3.0 - Released March 7th 2008:
	--------------------------------------------
		* Unneccesary control endpoint config removed from device mode
		* Fixed device standard request interpreter accidentally processing some class-specific requests
		* Added USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS compile time options to instruct the library
		  to use descriptors stored in RAM or EEPROM rather than flash memory
		* All demos now disable watchdog on startup, in case it has been enabled by fuses or the bootloader
		* USB_DEV_OPT_LOWSPEED option now works correctly
		* Added ability to set the USB options statically for a binary size reduction via the USE_STATIC_OPTIONS
		  compile time define
		* USB_Init no longer takes a Mode parameter if compiled for a USB device with no host mode option, or
		  if forced to a particular mode via the USB_HOST_ONLY or USB_DEVICE_ONLY compile time options
		* USB_Init no longer takes an Options parameter if options statically configured by USE_STATIC_OPTIONS
		* Endpoint_Ignore_* and Pipe_Ignore_* made smaller by making the dummy variable non-volatile so that the
		  compiler can throw away the result more efficiently
		* Added in an optional GroupID value to each scheduler entry, so that groups of tasks can once again be
		  controlled by the new Scheduler_SetGroupTaskMode() routine
		* Added support for AT90USB162 and AT90USB82 AVR models
		* Added support for the STK525 and STK526 boards
		* Added support for custom board drivers to be supplied by selecting the board type as BOARD_USER, and
		  placing board drivers in <APP DIRECTORY>/Board/
		* PLL is now stopped and USB clock is frozen when detatched from host in device mode, to save power
		* Joystick defines are now in synch with the schematics - orientation will be rotated for the USBKEY
		* Fixed USB_DEV_IsUSBSuspended() - now checks the correct register
		* Fixed data transfers to devices when in host mode
		* Renamed USB_DEV_OPT_HIGHSPEED to USB_DEV_OPT_FULLSPEED and USB_HOST_IsDeviceHighSpeed() to
		  USB_HOST_IsDeviceFullSpeed() to be in line with the official USB speed names (to avoid confusion with
		  the real high speed mode, which is unavaliable on the USB AVRs)

	Version 1.2.0 - Released February 4th, 2008:
	--------------------------------------------
		* Added USB_DeviceEnumerationComplete event for host mode
		* Added new Scheduler_Init routine to preprepare the scheduler, so that tasks can be started and
		  stopped before the scheduler has been started (via Scheduler_Start)
		* Connection events in both Device and Host mode are now interrupt-driven, allowing the USB management
		  task to be stopped when the USB is not connected to a host or device
		* All demos updated to stop the USB task when not in use via the appropriate USB events
		* Mass Storage Host demo application updated to function correctly with all USB flash disks
		* Mass Storage Host demo application now prints out the capacity and number of LUNs in the attached
		  device, and prints the first block as hexadecimal numbers rather than ASCII characters
		* Endpoint and Pipe clearing routines now clear the Endpoint/Pipe interrupt and status flags
		* Shifted error handling code in the host enum state machine to a single block, to reduce code complexity
		* Added in DESCRIPTOR_TYPE, DESCRIPTOR_SIZE and DESCRIPTOR_CAST macros to make config descriptor processing
		  clearer in USB hosts and DESCRIPTOR_ADDRESS for convenience in USB devices
		* Added in alloca macro to common.h, in case the user is using an old version of avr-lib-c missing the macro


	Version 1.1.0 - Released January 25th, 2008:
	--------------------------------------------
		* Fixed DCONNI interrupt being enabled accidentally after a USB reset
		* Fixed DDISCI interrupt not being disabled when a device is not connected
		* Added workaround for powerless pullup devices causing false disconnect interrupts
		* Added USB_DeviceEnumerationFailed event for Host mode
		* AVR_HOST_GetDeviceConfigDescriptor routine no longer modifies ConfigSizePtr if a valid buffer
		  pointer is passed
		* Added ALLOCABLE_BYTES to DynAlloc, and added code to make the size of key storage variables
		  dependant on size of memory parameters passed in via the user project's makefile
		* Fixed incorrect device reset routine being called in USBTask
		* Devices which do not connect within the standard 300mS are now supported
		* Removed incorrect ATTR_PURE from Scheduler_SetTaskMode(), which was preventing tasks from being
		  started/stopped, as well as USB_InitTaskPointer(), which was breaking dual device/host USB projects
		* Changed scheduler to use the task name rather than IDs for setting the task mode, eliminating the
		  need to have a task ID list
		* ID transistion interrupt now raises the appropriate device/host disconnect event if device attached
		* Fixed double VBUS change (and VBUS -) event when detatching in device mode
		* Added ability to disable ANSI terminal codes by the defining of DISABLE_TERMINAL_CODES in makefile
		* Removed return from ConfigurePipe and ConfigureEndpoint functions - use Pipe_IsConfigured() and 
		  Endpoint_IsConfigured() after calling the config functions to determine success